#ifndef _BUILDER_H_
#define _BUILDER_H_

#include <iostream>
#include <string>
using namespace std;

// class Product;
class Builder
{
public:
    virtual ~Builder();
    virtual void BuilderPartA(const string& buildPara) = 0;
    virtual void BuilderPartB(const string& buildPara) = 0;
    virtual void BuilderPartC(const string& buildPara) = 0;
    // virtual Product* GetProduct() = 0;
protected:
    Builder();
};

class ConcreteBuilder : public Builder
{
public:
    ConcreteBuilder();
    ~ConcreteBuilder();
    virtual void BuilderPartA(const string& buildPara);
    virtual void BuilderPartB(const string& buildPara);
    virtual void BuilderPartC(const string& buildPara);
    // virtual Product* GetProduct();
};

#endif // _BUILDER_H_